package com.pxr.shuzu;
import sun.awt.windows.WPrinterJob;

import java.util.Arrays;
public class Array2 {

    public static void main(String[] args) {
        test05();
    }

    public static void test() {
        //声明二维数组
        int[][] arr;
        //初始化
        int[][] arr1 = new int[3][4];
        int[][] arr2 = new int[][]{{1,2,3},{4,4,4,4,4},{4,2,3,3}};
        int[][] arr3 = {{1,23,33,3},{33,5,56,7},{6,3,2,3}};

        // 分开声明初始化
        int[][] arr4 = new int[3][];
        // 第二步：每一行都要初始化
        arr4[0] = new int[5];

        //遍历二维数组

        //外层for循环遍历行数
        for (int i = 0; i < arr2.length; i++) {
            //内层for循环遍历列数
            for (int j = 0; j < arr2[i].length; j++) {
                System.out.print("  "+arr2[i][j]);
            }
            System.out.println();
        }
    }
    public static void test1() {
        //定义并初始化数组
        int[] arr = new int[]{3,5,232,566,2,54};
        System.out.println("排序前：");
        //遍历数组
        for(int i=0;i< arr.length;i++) {
            System.out.print("   "+arr[i]);

        }

        /**
         * 冒泡排序
         */

        //外层控制比较轮数
        for(int i=0;i<arr.length;i++) {
            //内层完成两两比较，并交换
            for(int j=0;j<arr.length - i - 1;j++) {
                //比较大小
                if(arr[j] > arr[j+1]) {
                    //交换
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        System.out.println();
        System.out.println("排序后：");
        //遍历数组
        for(int i=0;i< arr.length;i++) {
            System.out.print("   "+arr[i]);

        }
    }

    public static void test2() {
        // 被扩容的数组
        int[] arr = new int[]{2,4,6,6,78,8,9};
        System.out.println("扩容之前的数组：");
        printArr(arr);
        // 使用System工具类进行扩容
        // 创建扩容的新数组
        int[] arrNew = new int[20];
        System.arraycopy(arr,0,arrNew,0,arr.length);
        System.out.println("扩容后的数组：");
        printArr(arrNew);
        System.out.println("判断扩容前后是不是同一个存储单元：" + (arr == arrNew));
        arr = arrNew;
    }

    /**
     * 数组——Arrays工具类--数组扩容
     */
    public static void test05() {
        // 被扩容的数组
        int[] arr = new int[]{4, 2, 7, 8, 1, 9, 5};
        System.out.println("扩容之前的数组：");
        printArr(arr);
        // 使用Arrays工具类进行扩容
        int[] arrNew = Arrays.copyOf(arr, 20);
        System.out.println("扩容之后的数组：");
        printArr(arrNew);
        System.out.println("判断扩容前后是不是同一个存储单元：" + (arr == arrNew));
        arr = arrNew;
    }

    /**
     * 遍历数组
     * @param arr
     */
    private static void printArr(int[] arr) {
        for (int i : arr) {
            System.out.print("  " + i);
        }
        // 换行
        System.out.println();
    }

}
